home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / CPPHEAD2.SCT < prev    next >
Encoding:
Text File  |  1995-07-26  |  12.8 KB  |  238 lines

  1. // Class: CLASS_NAME            //ANSI C++
  2.  
  3. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$CLASS_NAME$_H  //Required for current class
  4.   #define __$CAPITALIZE_ALL$TRUNCATE_EIGHT$CLASS_NAME$_H
  5.  
  6. #ifndef __IOSTREAM_H            //Required for cin and cout
  7.   #include <iostream.h>                 
  8. #endif
  9.  
  10. #ifndef __CSTRING_H            //Required for cstring
  11.   #include <cstring.h>                 
  12. #endif
  13.  
  14. [                               //Required for base classes
  15. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$BASE_CLASS$_H     //BASE_CLASS
  16.   #include "TRUNCATE_EIGHT$BASE_CLASS$.h"
  17. #endif
  18. [#include <INCLUDE_FILE>        //Required for include files ] 
  19. [                               //Required for 1:1 association classes
  20. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$ASSOCIATION_ONE_CLASS$_H    //ASSOCIATION_ONE_CLASS
  21.   #include "TRUNCATE_EIGHT$ASSOCIATION_ONE_CLASS.h"
  22. #endif ]
  23. [                               //Required for 1:1 aggregation (part) classes
  24. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$AGGREGATION_ONE_CLASS$_H    //AGGREGATION_ONE_CLASS
  25.   #include "TRUNCATE_EIGHT$AGGREGATION_ONE_CLASS$.h"
  26. #endif ] 
  27. [                               //Required for 1:M association classes
  28. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$ASSOCIATION_MANY_CLASS$_H   //ASSOCIATION_MANY_CLASS
  29.   #include "TRUNCATE_EIGHT$ASSOCIATION_MANY_CLASS$.h"
  30. #endif ] 
  31. [                               //Required for 1:M aggregation (part) classes
  32. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$AGGREGATION_MANY_CLASS$_H   //AGGREGATION_MANY_CLASS
  33.   #include "TRUNCATE_EIGHT$AGGREGATION_MANY_CLASS$.h"
  34. #endif ] 
  35.           NO_OUTPUT_BEGIN Use the the CLASS_USER fields for typedef, enum, const declarations, e.g.
  36.           const int maxNumberOfTires = 4; NO_OUTPUT_END
  37. CLASS_USER1
  38. CLASS_USER2
  39.  
  40. class CLASS_NAME[NO_RETURN NO_REPEAT: NO_REPEAT public BASE_CLASS ,DELETE_LAST_SYMBOL] CLASS_LIBRARY_BASE_CLASS     
  41. { SELECT_WHEN ATTRIBUTE_ACCESS == private
  42.   [CPP_ATTRIBUTE_STATIC CPP_ATTRIBUTE_CONSTANT ATTRIBUTE_TYPE ATTRIBUTE_NAME$; //Attribute data member] 
  43.  
  44.   [AGGREGATION_ONE_CLASS AGGREGATION_ONE_NAME$; //1:1 aggregation part data member] 
  45.  
  46.   [ASSOCIATION_ONE_CLASS$* ASSOCIATION_ONE_NAME$; //1:1 association object data member] 
  47.  
  48.   [ASSOCIATION_ONE_CLASS null$ASSOCIATION_ONE_CLASS;// Null association object for association object]
  49.  
  50.   [int AGGREGATION_MANY_NAME$Index; //Index for array of 1:M aggregation part objects]
  51.  
  52.   [          //1:M aggregation part data member
  53.             //Change C array to C++ collection class with iterator
  54.    AGGREGATION_MANY_CLASS AGGREGATION_MANY_NAME LITERAL_SYMBOL[maxNumberOf$AGGREGATION_MANY_CLASS$s LITERAL_SYMBOL];]   
  55.  
  56.   [int ASSOCIATION_MANY_NAME$Index; //Index for array of 1:M association objects] 
  57.  
  58.   [          //1:M association object data member
  59.             //Change C array to C++ collection class with iterator
  60.    ASSOCIATION_MANY_CLASS$* ASSOCIATION_MANY_NAME LITERAL_SYMBOL[maxNumberOf$ASSOCIATION_MANY_CLASS$s LITERAL_SYMBOL];] 
  61.  
  62.   [          // Null association object for initialization of association object data member
  63.   ASSOCIATION_MANY_CLASS$ null$ASSOCIATION_MANY_CLASS;]
  64.  
  65. SELECT_WHEN OPERATION_ACCESS == private
  66. [  CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL  ; ]
  67.  
  68. protected:
  69. SELECT_WHEN OPERATION_ACCESS == protected
  70. [  CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL ; ]
  71.  
  72. SELECT_WHEN ATTRIBUTE_ACCESS == protected 
  73. [CPP_ATTRIBUTE_STATIC CPP_ATTRIBUTE_CONSTANT ATTRIBUTE_TYPE ATTRIBUTE_NAME$;]  
  74.  
  75. public:
  76.  
  77.   SELECT_WHEN ATTRIBUTE_ACCESS == public
  78.   [CPP_ATTRIBUTE_STATIC CPP_ATTRIBUTE_CONSTANT ATTRIBUTE_TYPE ATTRIBUTE_NAME$;]
  79.  
  80.              //Default constructor alternative to compiler provided default constructor
  81.              //Ensure correct initial values
  82.              //Initialization list has members in the order declared
  83.              //Association object data member pointers initialized to null association object
  84.   CLASS_NAME ();
  85.  
  86.              //Constructor with arguments
  87.              //Update to argument list to initialize base class data members, 
  88.              //e.g. (int aNumber) : BaseClass (aNumber)
  89.   CLASS_NAME ( SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN ATTRIBUTE_TYPE a$ATTRIBUTE_NAME,DELETE_LAST_SYMBOL] ) ;
  90.   
  91.              //Copy Constructor NO_OUTPUT_BEGIN
  92.              //Copy constructor alternative to compiler provided default copy constructor
  93.              //Copy alternatives for association objects: (1) initialize association object to nullAssociation Object
  94.              //(2) Shallow copy to copy pointers of association objects (3) Deep copy to create new association objects
  95.              //and copy values of association objects
  96.              //Commented out code assigns 1:1 and 1:M association object data member pointers for shallow copy
  97.              //Remove // if you desire to assign pointers NO_OUTPUT_END
  98.   CLASS_NAME (const CLASS_NAME$& a$CLASS_NAME );
  99.  
  100.              //Operator= Assignment Operator NO_OUTPUT_BEGIN
  101.              // Alternatives to compiler provided default operator=
  102.              //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object
  103.              //(2) Shallow copy to copy pointers to association objects (3) Deep copy to create new association objects
  104.              //and copy values of association objects
  105.              //Commented out code assigns 1:1 association object data member pointers for shallow copy 
  106.              //Remove // if you desire to assign association object pointers for shallow copy    NO_OUTPUT_END
  107.   CLASS_NAME& operator= (const CLASS_NAME$& a$CLASS_NAME);
  108.  
  109.             //Operator== Equality Operator NO_OUTPUT_BEGIN
  110.             //No compiler default operator== generated 
  111.             //Update to access 1:1 association object data members
  112.             //Function does not compare 1:1 and 1:M association object data member pointers     NO_OUTPUT_END
  113.   int operator== (const CLASS_NAME$& a$CLASS_NAME) const;
  114.  
  115.             //Operator<< for cout
  116.   friend ostream& operator<< (ostream& os, const CLASS_NAME$& a$CLASS_NAME);
  117.  
  118.             //Operator>> for cin
  119.   friend istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME);
  120.  
  121. SELECT_WHEN ATTRIBUTE_IS_NORMAL 
  122. [          //Get accessor function for non-static attribute data member
  123.   ATTRIBUTE_TYPE get$ATTRIBUTE_NAME$() const
  124.   { return ATTRIBUTE_NAME$;
  125.   }  ] 
  126. SELECT_WHEN ATTRIBUTE_IS_NORMAL 
  127. [          //Set accessor function for non-static attribute data member
  128.   void set$ATTRIBUTE_NAME (const ATTRIBUTE_TYPE a$ATTRIBUTE_NAME$)
  129.   { ATTRIBUTE_NAME = a$ATTRIBUTE_NAME$;
  130.   }  ] 
  131. SELECT_WHEN ATTRIBUTE_IS_STATIC 
  132. [          //Get accessor function for static attribute data member
  133.   static ATTRIBUTE_TYPE get$ATTRIBUTE_NAME$()
  134.   { return ATTRIBUTE_NAME$;
  135.   }  ]  
  136. SELECT_WHEN ATTRIBUTE_IS_STATIC 
  137. [          //Set accessor function for static attribute data member
  138.   static void set$ATTRIBUTE_NAME ( const ATTRIBUTE_TYPE a$ATTRIBUTE_NAME$)
  139.   { ATTRIBUTE_NAME = a$ATTRIBUTE_NAME$;
  140.   }  ] 
  141. SELECT_WHEN ATTRIBUTE_IS_CONSTANT 
  142. [          //Get accessor function for constant attribute data member
  143.   ATTRIBUTE_TYPE get$ATTRIBUTE_NAME$()
  144.   { return ATTRIBUTE_NAME$;
  145.   }  ]  
  146. [          //Get accessor function for 1:1 aggregation part data member
  147.   const AGGREGATION_ONE_CLASS$& get$AGGREGATION_ONE_CLASS$() const
  148.   { return AGGREGATION_ONE_NAME$;
  149.   }  ] 
  150. [          //Set accessor function for 1:1 aggregation part data member
  151.   void set$AGGREGATION_ONE_CLASS (const AGGREGATION_ONE_CLASS$& a$AGGREGATION_ONE_NAME$)
  152.   { AGGREGATION_ONE_NAME = a$AGGREGATION_ONE_NAME$;
  153.   }  ]
  154. [          //Get accessor function for 1:1 association object data member
  155.   const ASSOCIATION_ONE_CLASS$* get$ASSOCIATION_ONE_CLASS$() const
  156.   { return ASSOCIATION_ONE_NAME$;
  157.   }  ]  
  158. [          //Set accessor function for 1:1 association object data member
  159.   void set$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* const a$ASSOCIATION_ONE_NAME$)
  160.   { ASSOCIATION_ONE_NAME = a$ASSOCIATION_ONE_NAME$;
  161.   }  ]
  162. [          //Remove function for 1:1 association object data member
  163.           //Warning delete ASSOCIATION_ONE_NAME object if dynamic object
  164.   void remove$ASSOCIATION_ONE_CLASS$(); //throw (string)  ] 
  165.  
  166. [          //Exists function for 1:1 association object data member
  167.   int exists$ASSOCIATION_ONE_CLASS$() const;  ] 
  168.  
  169. [          //Exists function with argument for 1:1 association object data member
  170.   int exists$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* const a$ASSOCIATION_ONE_NAME$) const;  ] 
  171.  
  172. [           //Get accessor function for 1:M aggregation collection NO_OUTPUT_BEGIN
  173.            //Change C array to C++ collection class with iterator
  174.            //Returns pointer to the 1st element of the C array NO_OUTPUT_END
  175.   const AGGREGATION_MANY_CLASS$* get$AGGREGATION_MANY_CLASS$Collection () const ;  ] 
  176.  
  177. [            //Set accessor function for 1:M aggregation collection  NO_OUTPUT_BEGIN
  178.             //Change C array to C++ collection class with iterator
  179.             //Parameter is pointer to the first element of the C array  NO_OUTPUT_END
  180.   void set$AGGREGATION_MANY_CLASS$Collection ($AGGREGATION_MANY_CLASS$* const a$AGGREGATION_MANY_NAME$Collection); ]
  181.  
  182. [            //Get accessor function for 1:M aggregation part data member  NO_OUTPUT_BEGIN
  183.             //Returns the first 1:M aggregation part in the array
  184.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  185.   const AGGREGATION_MANY_CLASS$& getFirst$AGGREGATION_MANY_CLASS$() const ;  ]
  186.  
  187. [            //Exists function for 1:M aggregation part data member  NO_OUTPUT_BEGIN
  188.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  189.   int exists$AGGREGATION_MANY_CLASS (const AGGREGATION_MANY_CLASS$& a$AGGREGATION_MANY_CLASS$) const ;   ] 
  190.  
  191. [             //Get accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  192.              //Change C array to C++ collection class with iterator
  193.              //Returns pointer to 1st element of the C array  NO_OUTPUT_END
  194.   const ASSOCIATION_MANY_CLASS$* get$ASSOCIATION_MANY_CLASS$Collection() const ;  ] 
  195.  
  196. [             //Set accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  197.              //Change C array to C++ collection class with iterator
  198.              //Parameter is pointer to 1st element of the C array  NO_OUTPUT_END
  199.   void set$ASSOCIATION_MANY_CLASS$Collection ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$Collection); ]
  200.  
  201. [             //Add function for 1:M association object data member  NO_OUTPUT_BEGIN
  202.              //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  203.   void add$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$); //throw (string) ]
  204.  
  205. [            //Remove function for 1:M association object data member
  206.             //Warning delete ASSOCIATION_MANY_NAME object if dynamic object  NO_OUTPUT_BEGIN
  207.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  208.   void removeLast$ASSOCIATION_MANY_CLASS ( ) ;//throw (string)  ] 
  209.  
  210. [            //Remove all function for 1:M association object data member
  211.             //Warning delete ASSOCIATION_MANY_NAME object if dynamic object  NO_OUTPUT_BEGIN
  212.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  213.   void removeAll$ASSOCIATION_MANY_CLASS$s ( ) ;//throw (string)  ]
  214.  
  215. [            //Get accessor function for 1:M association object data member  NO_OUTPUT_BEGIN
  216.             //Change C array to C++ collection class with iterator
  217.             //Returns the first 1:M association object pointer in the array  NO_OUTPUT_END
  218.   const ASSOCIATION_MANY_CLASS$* getFirst$ASSOCIATION_MANY_CLASS$() const ;//throw (string)  ] 
  219.  
  220. [            //Exists function for 1:M association object data member  NO_OUTPUT_BEGIN
  221.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  222.   int exists$ASSOCIATION_MANY_CLASS$() const ;  ] 
  223.  
  224. [            //Exists function for 1:M association object data member  NO_OUTPUT_BEGIN
  225.             //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  226.   int exists$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) const ;  ] 
  227. SELECT_WHEN OPERATION_ACCESS == public
  228. [CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL  ;  ] 
  229.  
  230.  OPERATION_CPP_VIRTUAL_BASE_CLASS ~ CLASS_NAME ( ) { }  //Destructor - Delete any pointer data members that used new in constructors 
  231.                //Destructor should be virtual if and only if class contains at least one virtual function
  232.               //Objects destroyed in the reverse order of the construction order
  233. };
  234.  
  235. #endif
  236.  
  237.